/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2002-2006
* Sleepycat Software. All rights reserved.
*
* $Id: TxnPrepare.java,v 1.1 2006/05/06 08:59:01 ckaestne Exp $
*/
package com.sleepycat.je.txn;
import java.nio.ByteBuffer;
import javax.transaction.xa.Xid;
import com.sleepycat.je.log.LogEntryType;
import com.sleepycat.je.log.LogReadable;
import com.sleepycat.je.log.LogUtils;
import com.sleepycat.je.log.LoggableObject;
import com.sleepycat.je.utilint.DbLsn;
/**
* This class writes out a transaction prepare record.
*/
public class TxnPrepare extends TxnEnd {
private Xid xid;
public TxnPrepare(long id, Xid xid) {
/* LastLSN is never used. */
super(id, DbLsn.NULL_LSN);
this.xid = xid;
}
/**
* For constructing from the log.
*/
public TxnPrepare() {
}
public Xid getXid() {
return xid;
}
/*
* Log support
*/
/**
* @see TxnEnd#getLogType
*/
public LogEntryType getLogType() {
return LogEntryType.LOG_TXN_PREPARE;
}
protected String getTagName() {
return "TxnPrepare";
}
/**
* @see LoggableObject#getLogSize
*/
public int getLogSize() {
return LogUtils.LONG_BYTES + // id
LogUtils.getTimestampLogSize() + // timestamp
LogUtils.getXidSize(xid); // Xid
}
/**
* @see LoggableObject#writeToLog
*/
public void writeToLog(ByteBuffer logBuffer) {
LogUtils.writeLong(logBuffer, id);
LogUtils.writeTimestamp(logBuffer, time);
LogUtils.writeXid(logBuffer, xid);
}
/**
* @see LogReadable#readFromLog
*/
public void readFromLog(ByteBuffer logBuffer, byte entryTypeVersion) {
id = LogUtils.readLong(logBuffer);
time = LogUtils.readTimestamp(logBuffer);
xid = LogUtils.readXid(logBuffer);
}
/**
* @see LogReadable#dumpLog
*/
public void dumpLog(StringBuffer sb, boolean verbose) {
sb.append("<").append(getTagName());
sb.append(" id=\"").append(id);
sb.append("\" xid=\"").append(xid);
sb.append("\" time=\"").append(time);
sb.append("\">");
sb.append("</").append(getTagName()).append(">");
}
}